import win32com.client
import pythoncom

arg_Nothing = win32com.client.VARIANT(pythoncom.VT_DISPATCH, None) 
def get_solidworks_instance():
    """
    尝试连接到一个已经运行的SolidWorks实例，
    如果没有找到，则启动一个新的实例。
    """
  
    try:
        # 尝试连接到现有的SolidWorks应用程序
        swApp = win32com.client.Dispatch("SldWorks.Application")
    except pythoncom.com_error:
        print("未找到正在运行的SolidWorks实例，正在启动新实例...")
        # 如果没有找到，则创建一个新的实例
        swApp = win32com.client.gencache.EnsureDispatch("SldWorks.Application")
    return swApp

# 获取SolidWorks应用程序对象
swApp = get_solidworks_instance()

# 激活SolidWorks窗口（可选）
swApp.Visible = True

# 检查是否有已打开的文档，如果没有，则创建新零件文档
if swApp.ActiveDoc is None:
    # 路径需要根据你的SolidWorks安装版本和模板位置调整
    part = swApp.NewDocument(r"C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2025\templates", 0, 0, 0)
else:
    print("已有文档处于打开状态，使用现有文档进行操作或关闭当前文档后重试。")

# 接下来的代码可以继续按照之前的逻辑来创建立方体...
swModel = swApp.ActiveDoc
# 创建草图并绘制矩形
import win32com.client
import pythoncom

def get_sw_app():
    """获取或启动 SolidWorks 实例"""
    try:
        swApp = win32com.client.GetActiveObject("SldWorks.Application")
        print("连接到已运行的 SolidWorks。")
    except:
        print("未检测到 SolidWorks，正在启动...")
        swApp = win32com.client.Dispatch("SldWorks.Application")
    swApp = win32com.client.Dispatch("SldWorks.Application")
    swApp.Visible = True
    swApp.Visible = True
    swApp.CommandInProgress =True
    return swApp

def get_swmodel():
    # 获取 SolidWorks 实例
    swApp = get_sw_app()

    # 创建新零件（如果无活动文档）
    if swApp.ActiveDoc is None:
        # 使用默认零件模板（路径可能因版本而异）
        # 建议使用空模板或确保路径正确
         # 获取默认零件模板
        swApp.NewDocument(r"C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2025\templates\gb_part.prtdot", 0, 0, 0)
       
   
        
    swModel = swApp.ActiveDoc
    
    return swModel


